package demo3

import (
	"fmt"
)

// Factorial Go 语言的递归函数实例阶乘：
func Factorial(n uint64) (result uint64) {
	if n > 0 {
		result = n * Factorial(n-1)
		return result
	}
	return 1
}

// 斐波那契数列
func fibonacci(n int) int {
	if n < 2 {
		return n
	}
	return fibonacci(n-2) + fibonacci(n-1)
}

// TestDemo36 函数递归
func TestDemo36() {
	// demo1
	a1 := 4
	fmt.Printf("%d 的阶乘是 %d\n", a1, Factorial(uint64(a1)))

	// demo2
	var i int
	for i = 0; i < 10; i++ {
		fmt.Printf("%d\t", fibonacci(i))
	}
	fmt.Println()
}
